package org.eiahe.hr.salary.service;

import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;
import org.eiahe.hr.salary.domain.bo.EmployeePhoneAssociationBo;
import org.eiahe.hr.salary.domain.vo.EmployeePhoneAssociationVo;

import java.util.Collection;
import java.util.List;

/**
 * 员工手机关联Service接口
 *
 * @author zhangnn
 */
public interface IEmployeePhoneAssociationService {

    /**
     * 查询员工手机关联
     *
     * @param associationId 员工手机关联ID
     * @return 员工手机关联
     */
    EmployeePhoneAssociationVo queryById(Long associationId);

    /**
     * 查询员工手机关联列表
     *
     * @param bo 员工手机关联业务对象
     * @return 员工手机关联集合
     */
    List<EmployeePhoneAssociationVo> queryList(EmployeePhoneAssociationBo bo);

    /**
     * 分页查询员工手机关联列表
     *
     * @param bo        员工手机关联业务对象
     * @param pageQuery 分页参数
     * @return 员工手机关联分页数据
     */
    TableDataInfo<EmployeePhoneAssociationVo> queryPageList(EmployeePhoneAssociationBo bo, PageQuery pageQuery);

    /**
     * 新增员工手机关联
     *
     * @param bo 员工手机关联业务对象
     * @return 是否成功
     */
    Boolean insertByBo(EmployeePhoneAssociationBo bo);

    /**
     * 修改员工手机关联
     *
     * @param bo 员工手机关联业务对象
     * @return 是否成功
     */
    Boolean updateByBo(EmployeePhoneAssociationBo bo);

    /**
     * 批量删除员工手机关联
     *
     * @param ids 员工手机关联ID数组
     * @return 是否成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 验证员工手机号 - 短信验证码方式
     *
     * @param associationId 员工手机关联ID
     * @param captcha       短信验证码
     * @return 是否成功
     */
    Boolean verifyPhoneNumberByCaptcha(Long associationId, String captcha);

    /**
     * 验证员工手机号 - 人脸识别方式
     *
     * @param associationId 员工手机关联ID
     * @param faceData      人脸数据
     * @return 是否成功
     */
    Boolean verifyPhoneNumberByFace(Long associationId, String faceData);

    /**
     * 检查员工手机号是否已验证
     *
     * @param employeeNo 工号
     * @return 是否已验证
     */
    Boolean isPhoneNumberVerified(String employeeNo);
}